Fixed a few small things.
This commit is contained in:
@ -2,38 +2,48 @@
|
|||||||
<asset type="texture" name="texture_eth_faces_day" ref="faceTexture" />
|
<asset type="texture" name="texture_eth_faces_day" ref="faceTexture" />
|
||||||
<asset type="texture" name="texture_eth_poses_day" ref="bodyTexture" />
|
<asset type="texture" name="texture_eth_poses_day" ref="bodyTexture" />
|
||||||
|
|
||||||
|
<item>
|
||||||
<MeshRenderer />
|
<MeshRenderer />
|
||||||
<QuadMeshHost />
|
<QuadMeshHost />
|
||||||
<SimpleBillboardedMaterial texture="faceTexture" />
|
<SimpleBillboardedMaterial texture="faceTexture" ref="faceMaterial" />
|
||||||
<TiledSprite tile="0" ref="faceSprite" sizeType="TILED_SPRITE_SIZE_TYPE_HEIGHT_RATIO" size="0.5" />
|
<TiledSprite tile="0" ref="faceSprite" sizeType="TILED_SPRITE_SIZE_TYPE_HEIGHT_RATIO" size="0.5" />
|
||||||
|
</item>
|
||||||
|
|
||||||
<!-- <item>
|
<item>
|
||||||
<MeshRenderer />
|
<MeshRenderer />
|
||||||
<QuadMeshHost />
|
<QuadMeshHost />
|
||||||
<SimpleBillboardedMaterial texture="bodyTexture" />
|
<SimpleBillboardedMaterial texture="bodyTexture" ref="bodyMaterial" />
|
||||||
<TiledSprite tile="0" ref="bodySprite" sizeType="TILED_SPRITE_SIZE_TYPE_HEIGHT_RATIO" size="0.5" />
|
<TiledSprite tile="0" ref="bodySprite" sizeType="TILED_SPRITE_SIZE_TYPE_HEIGHT_RATIO" size="0.5" />
|
||||||
</item> -->
|
</item>
|
||||||
|
|
||||||
<code type="properties">
|
<code type="properties">
|
||||||
TilesetGrid gridFace;
|
TilesetGrid gridFace;
|
||||||
TilesetGrid gridBody;
|
TilesetGrid gridBody;
|
||||||
|
StateProperty<float_t> alpha;
|
||||||
</code>
|
</code>
|
||||||
|
|
||||||
<code type="init">
|
<code type="init">
|
||||||
|
alpha = 0.0f;
|
||||||
|
|
||||||
this->gridFace = TilesetGrid(
|
this->gridFace = TilesetGrid(
|
||||||
1, 9,
|
1, 9,
|
||||||
faceTexture->texture.getWidth(), faceTexture->texture.getHeight(),
|
faceTexture->texture.getWidth(), faceTexture->texture.getHeight(),
|
||||||
0, 0,
|
0, 0,
|
||||||
0, 0
|
0, 0
|
||||||
);
|
);
|
||||||
faceSprite->tileset = &gridFace;
|
faceSprite->tileset = &gridFace;
|
||||||
|
|
||||||
this->gridBody = TilesetGrid(
|
this->gridBody = TilesetGrid(
|
||||||
1, 9,
|
1, 5,
|
||||||
bodyTexture->texture.getWidth(), bodyTexture->texture.getHeight(),
|
bodyTexture->texture.getWidth(), bodyTexture->texture.getHeight(),
|
||||||
0, 0,
|
0, 0,
|
||||||
0, 0
|
0, 0
|
||||||
);
|
);
|
||||||
//bodySprite->tileset = &gridBody;
|
bodySprite->tileset = &gridBody;
|
||||||
|
|
||||||
|
useEffect([&]{
|
||||||
|
this->faceMaterial->color.a = alpha;
|
||||||
|
this->bodyMaterial->color.a = alpha;
|
||||||
|
}, alpha);
|
||||||
</code>
|
</code>
|
||||||
</prefab>
|
</prefab>
|
@ -4,14 +4,21 @@
|
|||||||
<string lang="en"><font style="italics">There is a bucket.</font></string>
|
<string lang="en"><font style="italics">There is a bucket.</font></string>
|
||||||
</text>
|
</text>
|
||||||
|
|
||||||
|
<set property="eth->color"
|
||||||
|
<set property="eth->faceSprite->tile" to="1" type="int32_t" />
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<string lang="en">It sways above your head like the mouth of a god. You are on Angelwood's best stage, and they are cheering for you, calling you their Queen, their Prom Queen.</string>
|
<string lang="en">It sways above your head like the mouth of a god. You are on Angelwood's best stage, and they are cheering for you, calling you their Queen, their Prom Queen.</string>
|
||||||
</text>
|
</text>
|
||||||
|
|
||||||
|
<set property="eth->faceSprite->tile" to="0" type="int32_t" />
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<string lang="en">And you are dead soon.</string>
|
<string lang="en">And you are dead soon.</string>
|
||||||
</text>
|
</text>
|
||||||
|
|
||||||
|
<set property="eth->bodySprite->tile" to="3" type="int32_t" />
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<string lang="en">It's Prom Day. The metal bucket is swaying. Over you. Drenching your white pristine dress in guts and gore red. They aren't cheering anymore. They're gasping. But not screaming: oh, no, not in respectable Angelwood.</string>
|
<string lang="en">It's Prom Day. The metal bucket is swaying. Over you. Drenching your white pristine dress in guts and gore red. They aren't cheering anymore. They're gasping. But not screaming: oh, no, not in respectable Angelwood.</string>
|
||||||
</text>
|
</text>
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
<item ref="eth" prefab="prefabs/EthPrefab" />
|
<item ref="eth" prefab="prefabs/EthPrefab" />
|
||||||
|
|
||||||
<!-- <item lookAt="0, 0, 5, 0, 0, 0" > -->
|
<item lookAt="0, 0, 5, 0, 0, 0" >
|
||||||
<item lookAt="5, 5, 5, 0, 0, 0" >
|
<!-- <item lookAt="5, 5, 5, 0, 0, 0" > -->
|
||||||
<!-- <Camera ref="camera" type="CAMERA_TYPE_ORTHONOGRAPHIC" /> -->
|
<Camera ref="camera" type="CAMERA_TYPE_ORTHONOGRAPHIC" />
|
||||||
<Camera ref="camera" />
|
<!-- <Camera ref="camera" /> -->
|
||||||
<CameraTexture ref="camTexture" />
|
<CameraTexture ref="camTexture" />
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
</item>
|
</item>
|
||||||
|
|
||||||
<code type="init">
|
<code type="init">
|
||||||
useEvent([&]{
|
useEvent([&]{
|
||||||
assertNotNull(camTexture);
|
assertNotNull(camTexture);
|
||||||
assertNotNull(image);
|
assertNotNull(image);
|
||||||
camTexture->renderTarget.setSize(image->getWidth(), image->getHeight());
|
camTexture->renderTarget.setSize(image->getWidth(), image->getHeight());
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 58 MiB After Width: | Height: | Size: 58 MiB |
BIN
assets/games/liminal/textures/eth/test.png
Normal file
BIN
assets/games/liminal/textures/eth/test.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 MiB |
@ -10,18 +10,18 @@ namespace Dawn {
|
|||||||
template<typename T>
|
template<typename T>
|
||||||
class VNSetEvent : public VNAnimateEvent<T> {
|
class VNSetEvent : public VNAnimateEvent<T> {
|
||||||
public:
|
public:
|
||||||
T *modifies = nullptr;
|
StateProperty<T> *modifies = nullptr;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void onStart() override {
|
void onStart() override {
|
||||||
assertNotNull(this->modifies);
|
assertNotNull(this->modifies);
|
||||||
this->from = *modifies;
|
this->from = modifies->getValue();
|
||||||
|
|
||||||
VNAnimateEvent<T>::onStart();
|
VNAnimateEvent<T>::onStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setValue(T value) override {
|
void setValue(T value) override {
|
||||||
*modifies = value;
|
modifies->setValue(value);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -110,6 +110,26 @@ namespace Dawn {
|
|||||||
return this->_realValue;
|
return this->_realValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides an alternate way to set the value, e.g. if using the equals
|
||||||
|
* operator is not possible.
|
||||||
|
*
|
||||||
|
* @param val Value to set on this property.
|
||||||
|
*/
|
||||||
|
void setValue(V val) {
|
||||||
|
this->setInternal(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides an alternate way to get the value, e.g. if using the equals
|
||||||
|
* operator is not possible.
|
||||||
|
*
|
||||||
|
* @return The value of this property.
|
||||||
|
*/
|
||||||
|
V getValue() {
|
||||||
|
return this->_realValue;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destructor for StateProperty.
|
* Destructor for StateProperty.
|
||||||
*/
|
*/
|
||||||
|
@ -19,14 +19,22 @@ add_subdirectory(save)
|
|||||||
# Assets
|
# Assets
|
||||||
set(LIMINAL_ASSETS_DIR ${DAWN_ASSETS_DIR}/games/liminal)
|
set(LIMINAL_ASSETS_DIR ${DAWN_ASSETS_DIR}/games/liminal)
|
||||||
|
|
||||||
|
set(LIMINIAL_CHARACTER_SCALE 0.2)
|
||||||
tool_texture(texture_eth_faces_day
|
tool_texture(texture_eth_faces_day
|
||||||
FILE="${LIMINAL_ASSETS_DIR}/textures/eth/faces_day.png"
|
FILE="${LIMINAL_ASSETS_DIR}/textures/eth/faces_day.png"
|
||||||
|
SCALE=${LIMINIAL_CHARACTER_SCALE}
|
||||||
)
|
)
|
||||||
tool_texture(texture_eth_faces_night
|
tool_texture(texture_eth_faces_night
|
||||||
FILE="${LIMINAL_ASSETS_DIR}/textures/eth/faces_night.png"
|
FILE="${LIMINAL_ASSETS_DIR}/textures/eth/faces_night.png"
|
||||||
|
SCALE=${LIMINIAL_CHARACTER_SCALE}
|
||||||
)
|
)
|
||||||
tool_texture(texture_eth_poses_day
|
tool_texture(texture_eth_poses_day
|
||||||
FILE="${LIMINAL_ASSETS_DIR}/textures/eth/poses_day.png"
|
FILE="${LIMINAL_ASSETS_DIR}/textures/eth/poses_day.png"
|
||||||
|
SCALE=${LIMINIAL_CHARACTER_SCALE}
|
||||||
|
)
|
||||||
|
tool_texture(texture_eth_poses_night
|
||||||
|
FILE="${LIMINAL_ASSETS_DIR}/textures/eth/test.png"
|
||||||
|
SCALE=${LIMINIAL_CHARACTER_SCALE}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,6 +46,14 @@ void Texture::setSize(
|
|||||||
glDeleteTextures(1, &this->id);
|
glDeleteTextures(1, &this->id);
|
||||||
this->id = -1;
|
this->id = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DAWN_DEBUG_BUILD
|
||||||
|
int32_t maxSize;
|
||||||
|
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxSize);
|
||||||
|
|
||||||
|
assertTrue(width > 0 && width <= maxSize);
|
||||||
|
assertTrue(height > 0 && height <= maxSize);
|
||||||
|
#endif
|
||||||
|
|
||||||
this->width = width;
|
this->width = width;
|
||||||
this->height = height;
|
this->height = height;
|
||||||
|
@ -38,8 +38,7 @@ std::vector<struct ShaderPassItem> SimpleBillboardedMaterial::getRenderPasses(IR
|
|||||||
onlyPass.parameterBuffers[shader->bufferRenderPipeline] = &context.renderPipeline->shaderBuffer;
|
onlyPass.parameterBuffers[shader->bufferRenderPipeline] = &context.renderPipeline->shaderBuffer;
|
||||||
|
|
||||||
onlyPass.renderFlags = (
|
onlyPass.renderFlags = (
|
||||||
RENDER_MANAGER_RENDER_FLAG_BLEND |
|
RENDER_MANAGER_RENDER_FLAG_BLEND
|
||||||
RENDER_MANAGER_RENDER_FLAG_DEPTH_TEST
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if(this->texture != nullptr) {
|
if(this->texture != nullptr) {
|
||||||
|
@ -174,7 +174,41 @@ void Xml::load(Xml *xml, std::string data, size_t *j) {
|
|||||||
buffer += bufferWhitespaces;
|
buffer += bufferWhitespaces;
|
||||||
valueIsInWhitespace = false;
|
valueIsInWhitespace = false;
|
||||||
}
|
}
|
||||||
buffer += c;
|
|
||||||
|
if(c == '&') {
|
||||||
|
// Handle special characters. First read ahead to nearest semicolon OR
|
||||||
|
// nearest closing tag.
|
||||||
|
std::string sc;
|
||||||
|
while(c = data[i++]) {
|
||||||
|
xml->innerXml += c;
|
||||||
|
if(c == ';') break;
|
||||||
|
if(c == '<') assertUnreachable();//Invalid XML
|
||||||
|
sc += c;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(valueIsInWhitespace) {
|
||||||
|
buffer += bufferWhitespaces;
|
||||||
|
valueIsInWhitespace = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sc == "lt") {
|
||||||
|
buffer += '<';
|
||||||
|
} else if(sc == "gt") {
|
||||||
|
buffer += '>';
|
||||||
|
} else if(sc == "amp") {
|
||||||
|
buffer += '&';
|
||||||
|
} else if(sc == "apos") {
|
||||||
|
buffer += '\'';
|
||||||
|
} else if(sc == "quot") {
|
||||||
|
buffer += '"';
|
||||||
|
} else {
|
||||||
|
// Unknown special char?
|
||||||
|
std::cout << "Unknown Special character: " << sc << std::endl;
|
||||||
|
assertUnreachable();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
buffer += c;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -45,6 +45,7 @@ function(tool_texture target)
|
|||||||
set(FILTER_MAG "")
|
set(FILTER_MAG "")
|
||||||
set(WRAP_X "")
|
set(WRAP_X "")
|
||||||
set(WRAP_Y "")
|
set(WRAP_Y "")
|
||||||
|
set(SCALE "")
|
||||||
|
|
||||||
# Parse Args
|
# Parse Args
|
||||||
foreach(_PAIR IN LISTS ARGN)
|
foreach(_PAIR IN LISTS ARGN)
|
||||||
@ -73,6 +74,7 @@ function(tool_texture target)
|
|||||||
--wrapY="${WRAP_Y}"
|
--wrapY="${WRAP_Y}"
|
||||||
--filterMin="${FILTER_MIN}"
|
--filterMin="${FILTER_MIN}"
|
||||||
--filterMag="${FILTER_MIN}"
|
--filterMag="${FILTER_MIN}"
|
||||||
|
--scale="${SCALE}"
|
||||||
COMMENT "Generating texture ${target} from ${FILE}"
|
COMMENT "Generating texture ${target} from ${FILE}"
|
||||||
DEPENDS ${DEPS}
|
DEPENDS ${DEPS}
|
||||||
)
|
)
|
||||||
|
@ -16,7 +16,8 @@ std::map<std::string, std::string> TextureTool::getOptionalFlags() {
|
|||||||
{ "wrapX", "clamp" },
|
{ "wrapX", "clamp" },
|
||||||
{ "wrapY", "clamp" },
|
{ "wrapY", "clamp" },
|
||||||
{ "filterMin", "linear" },
|
{ "filterMin", "linear" },
|
||||||
{ "filterMax", "linear" }
|
{ "filterMax", "linear" },
|
||||||
|
{ "scale", "" }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,13 +41,19 @@ int32_t TextureTool::start() {
|
|||||||
}
|
}
|
||||||
in.close();
|
in.close();
|
||||||
|
|
||||||
// Convert to floating points
|
// Buffer to output
|
||||||
size_t len = STBI_rgb_alpha * w * h;
|
size_t len = STBI_rgb_alpha * w * h;
|
||||||
uint8_t *dataImage = (uint8_t*)malloc(sizeof(uint8_t) * len);
|
uint8_t *dataImage = (uint8_t*)malloc(sizeof(uint8_t) * len);
|
||||||
for(size_t i = 0; i < len; i++) {
|
|
||||||
auto dataIn = imageRaw[i];
|
if(!flags["scale"].empty()) {
|
||||||
dataImage[i] = dataIn;
|
float_t scale = std::stof(flags["scale"]);
|
||||||
|
stbir_resize_uint8(imageRaw, w, h, 0, dataImage, w * scale, h * scale, 0, STBI_rgb_alpha);
|
||||||
|
w = w * scale;
|
||||||
|
h = h * scale;
|
||||||
|
} else {
|
||||||
|
memcpy(dataImage, imageRaw, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
stbi_image_free(imageRaw);
|
stbi_image_free(imageRaw);
|
||||||
|
|
||||||
std::function<int32_t(std::string)> wrapFromString = [&](std::string wr) {
|
std::function<int32_t(std::string)> wrapFromString = [&](std::string wr) {
|
||||||
|
Reference in New Issue
Block a user